home *** CD-ROM | disk | FTP | other *** search
/ Multimedia Jumpstart / Multimedia Microsoft Jumpstart Version 1.1a (Microsoft).BIN / develpmt / sdk / vfw11.win / vfwdk / msacm.h_ / msacm.bin
Encoding:
Text File  |  1993-11-19  |  34.2 KB  |  1,196 lines

  1. //==========================================================================;
  2. //
  3. //  msacm.h
  4. //
  5. //  Copyright (c) 1992-1993 Microsoft Corporation.  All Rights Reserved.
  6. //
  7. //  Description:
  8. //      Audio Compression Manager Public Header File
  9. //
  10. //  History:
  11. //
  12. //==========================================================================;
  13.  
  14. #ifndef _INC_ACM
  15. #define _INC_ACM        /* #defined if msacm.h has been included */
  16.  
  17. #ifndef RC_INVOKED
  18. #pragma pack(1)         /* Assume byte packing throughout */
  19. #endif  /* RC_INVOKED */
  20.  
  21. #ifdef __cplusplus
  22. extern "C" {            /* Assume C declarations for C++ */
  23. #endif  /* __cplusplus */
  24.  
  25.  
  26. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  27. //
  28. //
  29. //
  30. //
  31. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  32.  
  33. #ifndef DRV_MAPPER_PREFERRED_INPUT_GET
  34. #define DRV_MAPPER_PREFERRED_INPUT_GET  (DRV_USER + 0)
  35. #endif
  36.  
  37. #ifndef DRV_MAPPER_PREFERRED_OUTPUT_GET
  38. #define DRV_MAPPER_PREFERRED_OUTPUT_GET (DRV_USER + 2)
  39. #endif
  40.  
  41.  
  42. #ifndef DRVM_MAPPER_STATUS
  43. #define DRVM_MAPPER_STATUS              (0x2000)
  44. #endif
  45.  
  46. #ifndef WIDM_MAPPER_STATUS
  47. #define WIDM_MAPPER_STATUS              (DRVM_MAPPER_STATUS + 0)
  48. #define WAVEIN_MAPPER_STATUS_DEVICE     0
  49. #define WAVEIN_MAPPER_STATUS_MAPPED     1
  50. #define WAVEIN_MAPPER_STATUS_FORMAT     2
  51. #endif
  52.  
  53. #ifndef WODM_MAPPER_STATUS
  54. #define WODM_MAPPER_STATUS              (DRVM_MAPPER_STATUS + 0)
  55. #define WAVEOUT_MAPPER_STATUS_DEVICE    0
  56. #define WAVEOUT_MAPPER_STATUS_MAPPED    1
  57. #define WAVEOUT_MAPPER_STATUS_FORMAT    2
  58. #endif
  59.  
  60.  
  61. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  62. //
  63. //
  64. //
  65. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  66.  
  67. #ifdef _WINDLL
  68.     #define ACMAPI              _far _pascal _loadds
  69. #else
  70.     #define ACMAPI              _far _pascal
  71. #endif
  72.  
  73.  
  74.  
  75. //--------------------------------------------------------------------------;
  76. //
  77. //  ACM General API's and Defines
  78. //
  79. //
  80. //
  81. //
  82. //--------------------------------------------------------------------------;
  83.  
  84. //
  85. //  there are four types of 'handles' used by the ACM. the first three
  86. //  are unique types that define specific objects:
  87. //
  88. //  HACMDRIVERID: used to _identify_ an ACM driver. this identifier can be
  89. //  used to _open_ the driver for querying details, etc about the driver.
  90. //
  91. //  HACMDRIVER: used to manage a driver (codec, filter, etc). this handle
  92. //  is much like a handle to other media drivers--you use it to send
  93. //  messages to the converter, query for capabilities, etc.
  94. //
  95. //  HACMSTREAM: used to manage a 'stream' (conversion channel) with the
  96. //  ACM. you use a stream handle to convert data from one format/type
  97. //  to another--much like dealing with a file handle.
  98. //
  99. //
  100. //  the fourth handle type is a generic type used on ACM functions that
  101. //  can accept two or more of the above handle types (for example the
  102. //  acmMetrics and acmDriverID functions).
  103. //
  104. //  HACMOBJ: used to identify ACM objects. this handle is used on functions
  105. //  that can accept two or more ACM handle types.
  106. //
  107. DECLARE_HANDLE(HACMDRIVERID);
  108. typedef HACMDRIVERID       *PHACMDRIVERID;
  109. typedef HACMDRIVERID   FAR *LPHACMDRIVERID;
  110.  
  111. DECLARE_HANDLE(HACMDRIVER);
  112. typedef HACMDRIVER         *PHACMDRIVER;
  113. typedef HACMDRIVER     FAR *LPHACMDRIVER;
  114.  
  115. DECLARE_HANDLE(HACMSTREAM);
  116. typedef HACMSTREAM         *PHACMSTREAM;
  117. typedef HACMSTREAM     FAR *LPHACMSTREAM;
  118.  
  119. DECLARE_HANDLE(HACMOBJ);
  120. typedef HACMOBJ            *PHACMOBJ;
  121. typedef HACMOBJ        FAR *LPHACMOBJ;
  122.  
  123.  
  124.  
  125. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  126. //
  127. //  ACM Error Codes
  128. //
  129. //  Note that these error codes are specific errors that apply to the ACM
  130. //  directly--general errors are defined as MMSYSERR_*.
  131. //
  132. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  133.  
  134. #ifndef _MMRESULT_
  135. #define _MMRESULT_
  136. typedef UINT                MMRESULT;
  137. #endif
  138.  
  139. #define ACMERR_BASE         (512)
  140. #define ACMERR_NOTPOSSIBLE  (ACMERR_BASE + 0)
  141. #define ACMERR_BUSY         (ACMERR_BASE + 1)
  142. #define ACMERR_UNPREPARED   (ACMERR_BASE + 2)
  143. #define ACMERR_CANCELED     (ACMERR_BASE + 3)
  144.  
  145.  
  146. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  147. //
  148. //  ACM Window Messages
  149. //
  150. //  These window messages are sent by the ACM or ACM drivers to notify
  151. //  applications of events.
  152. //
  153. //  Note that these window message numbers will also be defined in
  154. //  mmsystem.
  155. //
  156. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  157.  
  158. #define MM_ACM_OPEN         0x3CA           // conversion callback messages
  159. #define MM_ACM_CLOSE        0x3CB
  160. #define MM_ACM_DONE         0x3CC
  161.  
  162.  
  163. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  164. //
  165. //  acmGetVersion()
  166. //
  167. //  the ACM version is a 32 bit number that is broken into three parts as 
  168. //  follows:
  169. //
  170. //      bits 24 - 31:   8 bit _major_ version number
  171. //      bits 16 - 23:   8 bit _minor_ version number
  172. //      bits  0 - 15:   16 bit build number
  173. //
  174. //  this is then displayed as follows:
  175. //
  176. //      bMajor = (BYTE)(dwVersion >> 24)
  177. //      bMinor = (BYTE)(dwVersion >> 16) & 
  178. //      wBuild = LOWORD(dwVersion)
  179. //
  180. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  181.  
  182. DWORD ACMAPI acmGetVersion
  183. (
  184.     void
  185. );
  186.  
  187.  
  188. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  189. //
  190. //  acmMetrics()
  191. //
  192. //
  193. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  194.  
  195. MMRESULT ACMAPI acmMetrics
  196. (
  197.     HACMOBJ                 hao,
  198.     UINT                    uMetric,
  199.     LPVOID                  pMetric
  200. );
  201.  
  202. #define ACM_METRIC_COUNT_DRIVERS            1
  203. #define ACM_METRIC_COUNT_CODECS             2
  204. #define ACM_METRIC_COUNT_CONVERTERS         3
  205. #define ACM_METRIC_COUNT_FILTERS            4
  206. #define ACM_METRIC_COUNT_DISABLED           5
  207. #define ACM_METRIC_COUNT_HARDWARE           6
  208. #define ACM_METRIC_COUNT_LOCAL_DRIVERS      20
  209. #define ACM_METRIC_COUNT_LOCAL_CODECS       21
  210. #define ACM_METRIC_COUNT_LOCAL_CONVERTERS   22
  211. #define ACM_METRIC_COUNT_LOCAL_FILTERS      23
  212. #define ACM_METRIC_COUNT_LOCAL_DISABLED     24
  213. #define ACM_METRIC_HARDWARE_WAVE_INPUT      30
  214. #define ACM_METRIC_HARDWARE_WAVE_OUTPUT     31
  215. #define ACM_METRIC_MAX_SIZE_FORMAT          50
  216. #define ACM_METRIC_MAX_SIZE_FILTER          51
  217. #define ACM_METRIC_DRIVER_SUPPORT           100
  218. #define ACM_METRIC_DRIVER_PRIORITY          101
  219.  
  220.  
  221. //--------------------------------------------------------------------------;
  222. //
  223. //  ACM Drivers
  224. //
  225. //
  226. //
  227. //
  228. //--------------------------------------------------------------------------;
  229.  
  230. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  231. //
  232. //  acmDriverEnum()
  233. //
  234. //
  235. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  236.  
  237. typedef BOOL (CALLBACK *ACMDRIVERENUMCB)
  238. (
  239.     HACMDRIVERID            hadid,
  240.     DWORD                   dwInstance,
  241.     DWORD                   fdwSupport
  242. );
  243.  
  244. MMRESULT ACMAPI acmDriverEnum
  245. (
  246.     ACMDRIVERENUMCB         fnCallback,
  247.     DWORD                   dwInstance,
  248.     DWORD                   fdwEnum
  249. );
  250.  
  251. #define ACM_DRIVERENUMF_NOLOCAL     0x40000000L
  252. #define ACM_DRIVERENUMF_DISABLED    0x80000000L
  253.  
  254.  
  255.  
  256.  
  257. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  258. //
  259. //  acmDriverID()
  260. //
  261. //
  262. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  263.  
  264. MMRESULT ACMAPI acmDriverID
  265. (
  266.     HACMOBJ                 hao,
  267.     LPHACMDRIVERID          phadid,
  268.     DWORD                   fdwDriverID
  269. );
  270.  
  271.  
  272.  
  273. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  274. //
  275. //  acmDriverAdd()
  276. //
  277. //
  278. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  279.  
  280. MMRESULT ACMAPI acmDriverAdd
  281. (
  282.     LPHACMDRIVERID          phadid,
  283.     HINSTANCE               hinstModule,
  284.     LPARAM                  lParam, 
  285.     DWORD                   dwPriority,
  286.     DWORD                   fdwAdd
  287. );
  288.  
  289. #define ACM_DRIVERADDF_FUNCTION     0x00000003L  // lParam is a procedure
  290. #define ACM_DRIVERADDF_NOTIFYHWND   0x00000004L  // lParam is notify hwnd
  291. #define ACM_DRIVERADDF_TYPEMASK     0x00000007L  // driver type mask
  292. #define ACM_DRIVERADDF_LOCAL        0x00000000L  // is local to current task
  293. #define ACM_DRIVERADDF_GLOBAL       0x00000008L  // is global
  294.  
  295.  
  296.  
  297. //
  298. //  prototype for ACM driver procedures that are installed as _functions_
  299. //  or _notifations_ instead of as a standalone installable driver.
  300. //
  301. typedef LRESULT (CALLBACK *ACMDRIVERPROC)(DWORD, HACMDRIVERID, UINT, LPARAM, LPARAM);
  302.  
  303.  
  304. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  305. //
  306. //  acmDriverRemove()
  307. //
  308. //
  309. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  310.  
  311. MMRESULT ACMAPI acmDriverRemove
  312. (
  313.     HACMDRIVERID            hadid,
  314.     DWORD                   fdwRemove
  315. );
  316.  
  317.  
  318.  
  319. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  320. //
  321. //  acmDriverOpen()
  322. //
  323. //
  324. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  325.  
  326. MMRESULT ACMAPI acmDriverOpen
  327. (
  328.     LPHACMDRIVER            phad, 
  329.     HACMDRIVERID            hadid,
  330.     DWORD                   fdwOpen
  331. );
  332.  
  333.  
  334.  
  335. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  336. //
  337. //  acmDriverClose()
  338. //
  339. //
  340. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  341.  
  342. MMRESULT ACMAPI acmDriverClose
  343. (
  344.     HACMDRIVER              had,
  345.     DWORD                   fdwClose
  346. );
  347.  
  348.  
  349.  
  350. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  351. //
  352. //  acmDriverMessage()
  353. //
  354. //
  355. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  356.  
  357. LRESULT ACMAPI acmDriverMessage
  358. (
  359.     HACMDRIVER              had,
  360.     UINT                    uMsg, 
  361.     LPARAM                  lParam1,
  362.     LPARAM                  lParam2
  363. );
  364.  
  365.  
  366. //
  367. //
  368. //
  369. //
  370. #define ACMDM_USER                  (DRV_USER + 0x0000)
  371. #define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
  372. #define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)
  373.  
  374. #define ACMDM_BASE                  ACMDM_RESERVED_LOW
  375.  
  376. #define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)
  377.  
  378.  
  379. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  380. //
  381. //  acmDriverPriority
  382. //
  383. //
  384. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  385.  
  386. MMRESULT ACMAPI acmDriverPriority
  387. (
  388.     HACMDRIVERID            hadid,
  389.     DWORD                   dwPriority,
  390.     DWORD                   fdwPriority
  391. );
  392.  
  393.  
  394. #define ACM_DRIVERPRIORITYF_ENABLE      0x00000001L
  395. #define ACM_DRIVERPRIORITYF_DISABLE     0x00000002L
  396. #define ACM_DRIVERPRIORITYF_ABLEMASK    0x00000003L
  397. #define ACM_DRIVERPRIORITYF_BEGIN       0x00010000L
  398. #define ACM_DRIVERPRIORITYF_END         0x00020000L
  399. #define ACM_DRIVERPRIORITYF_DEFERMASK   0x00030000L
  400.  
  401.  
  402.  
  403.  
  404.  
  405. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  406. //
  407. //  acmDriverDetails()
  408. //
  409. //
  410. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  411.  
  412. //
  413. //  ACMDRIVERDETAILS
  414. //
  415. //  the ACMDRIVERDETAILS structure is used to get various capabilities from
  416. //  an ACM driver (codec, converter, filter).
  417. //
  418. #define ACMDRIVERDETAILS_SHORTNAME_CHARS    32
  419. #define ACMDRIVERDETAILS_LONGNAME_CHARS     128
  420. #define ACMDRIVERDETAILS_COPYRIGHT_CHARS    80
  421. #define ACMDRIVERDETAILS_LICENSING_CHARS    128
  422. #define ACMDRIVERDETAILS_FEATURES_CHARS     512
  423.  
  424. typedef struct tACMDRIVERDETAILS
  425. {
  426.     DWORD           cbStruct;           // number of valid bytes in structure
  427.  
  428.     FOURCC          fccType;            // compressor type 'audc'
  429.     FOURCC          fccComp;            // sub-type (not used; reserved)
  430.  
  431.     WORD            wMid;               // manufacturer id
  432.     WORD            wPid;               // product id
  433.  
  434.     DWORD           vdwACM;             // version of the ACM *compiled* for
  435.     DWORD           vdwDriver;          // version of the driver
  436.  
  437.     DWORD           fdwSupport;         // misc. support flags
  438.     DWORD           cFormatTags;        // total unique format tags supported
  439.     DWORD           cFilterTags;        // total unique filter tags supported
  440.  
  441.     HICON           hicon;              // handle to custom icon
  442.  
  443.     char            szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  444.     char            szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  445.     char            szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  446.     char            szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  447.     char            szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
  448.  
  449. } ACMDRIVERDETAILS, *PACMDRIVERDETAILS, FAR *LPACMDRIVERDETAILS;
  450.  
  451.  
  452. //
  453. //  ACMDRIVERDETAILS.fccType
  454. //
  455. //  ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC: the FOURCC used in the fccType
  456. //  field of the ACMDRIVERDETAILS structure to specify that this is an ACM
  457. //  codec designed for audio.
  458. //
  459. //
  460. //  ACMDRIVERDETAILS.fccComp
  461. //
  462. //  ACMDRIVERDETAILS_FCCCOMP_UNDEFINED: the FOURCC used in the fccComp
  463. //  field of the ACMDRIVERDETAILS structure. this is currently an unused
  464. //  field.
  465. //
  466. #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
  467. #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')
  468.  
  469.  
  470. //
  471. //  the following flags are used to specify the type of conversion(s) that
  472. //  the converter/codec/filter supports. these are placed in the fdwSupport
  473. //  field of the ACMDRIVERDETAILS structure. note that a converter can
  474. //  support one or more of these flags in any combination.
  475. //
  476. //  ACMDRIVERDETAILS_SUPPORTF_CODEC: this flag is set if the driver supports
  477. //  conversions from one format tag to another format tag. for example, if a
  478. //  converter compresses WAVE_FORMAT_PCM to WAVE_FORMAT_ADPCM, then this bit
  479. //  should be set.
  480. //
  481. //  ACMDRIVERDETAILS_SUPPORTF_CONVERTER: this flags is set if the driver
  482. //  supports conversions on the same format tag. as an example, the PCM
  483. //  converter that is built into the ACM sets this bit (and only this bit)
  484. //  because it converts only PCM formats (bits, sample rate).
  485. //
  486. //  ACMDRIVERDETAILS_SUPPORTF_FILTER: this flag is set if the driver supports
  487. //  transformations on a single format. for example, a converter that changed
  488. //  the 'volume' of PCM data would set this bit. 'echo' and 'reverb' are
  489. //  also filter types.
  490. //
  491. //  ACMDRIVERDETAILS_SUPPORTF_HARDWARE: this flag is set if the driver supports
  492. //  hardware input and/or output through a waveform device.
  493. //
  494. //  ACMDRIVERDETAILS_SUPPORTF_ASYNC: this flag is set if the driver supports
  495. //  async conversions.
  496. //
  497. //
  498. //  ACMDRIVERDETAILS_SUPPORTF_LOCAL: this flag is set _by the ACM_ if a
  499. //  driver has been installed local to the current task. this flag is also
  500. //  set in the fdwSupport argument to the enumeration callback function
  501. //  for drivers.
  502. //
  503. //  ACMDRIVERDETAILS_SUPPORTF_DISABLED: this flag is set _by the ACM_ if a
  504. //  driver has been disabled. this flag is also passed set in the fdwSupport
  505. //  argument to the enumeration callback function for drivers.
  506. //
  507. #define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
  508. #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
  509. #define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
  510. #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
  511. #define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
  512. #define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
  513. #define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L
  514.  
  515.  
  516. MMRESULT ACMAPI acmDriverDetails
  517. (
  518.     HACMDRIVERID            hadid,
  519.     LPACMDRIVERDETAILS      padd,
  520.     DWORD                   fdwDetails
  521. );
  522.  
  523.  
  524.  
  525.  
  526. //--------------------------------------------------------------------------;
  527. //
  528. //  ACM Format Tags
  529. //
  530. //
  531. //
  532. //
  533. //--------------------------------------------------------------------------;
  534.  
  535. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  536. //
  537. //  acmFormatTagDetails()
  538. //
  539. //
  540. //
  541. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  542.  
  543. #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
  544.  
  545. typedef struct tACMFORMATTAGDETAILS
  546. {
  547.     DWORD           cbStruct;
  548.     DWORD           dwFormatTagIndex;
  549.     DWORD           dwFormatTag;
  550.     DWORD           cbFormatSize;
  551.     DWORD           fdwSupport;
  552.     DWORD           cStandardFormats;
  553.     char            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  554.  
  555. } ACMFORMATTAGDETAILS, *PACMFORMATTAGDETAILS, FAR *LPACMFORMATTAGDETAILS;
  556.  
  557.  
  558. MMRESULT ACMAPI acmFormatTagDetails
  559. (
  560.     HACMDRIVER              had,
  561.     LPACMFORMATTAGDETAILS   paftd,
  562.     DWORD                   fdwDetails
  563. );
  564.  
  565. #define ACM_FORMATTAGDETAILSF_INDEX         0x00000000L
  566. #define ACM_FORMATTAGDETAILSF_FORMATTAG     0x00000001L
  567. #define ACM_FORMATTAGDETAILSF_LARGESTSIZE   0x00000002L
  568. #define ACM_FORMATTAGDETAILSF_QUERYMASK     0x0000000FL
  569.  
  570.  
  571.  
  572. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  573. //
  574. //  acmFormatTagEnum()
  575. //
  576. //
  577. //
  578. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  579.  
  580. typedef BOOL (CALLBACK *ACMFORMATTAGENUMCB)
  581. (
  582.     HACMDRIVERID            hadid,
  583.     LPACMFORMATTAGDETAILS   paftd,
  584.     DWORD                   dwInstance,
  585.     DWORD                   fdwSupport
  586. );
  587.  
  588. MMRESULT ACMAPI acmFormatTagEnum
  589. (
  590.     HACMDRIVER              had,
  591.     LPACMFORMATTAGDETAILS   paftd,
  592.     ACMFORMATTAGENUMCB      fnCallback,
  593.     DWORD                   dwInstance, 
  594.     DWORD                   fdwEnum
  595. );
  596.  
  597.  
  598.  
  599. //--------------------------------------------------------------------------;
  600. //
  601. //  ACM Formats
  602. //
  603. //
  604. //
  605. //
  606. //--------------------------------------------------------------------------;
  607.  
  608. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  609. //
  610. //  acmFormatDetails()
  611. //
  612. //
  613. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  614.  
  615. #define ACMFORMATDETAILS_FORMAT_CHARS   128
  616.  
  617. typedef struct tACMFORMATDETAILS
  618. {
  619.     DWORD           cbStruct;
  620.     DWORD           dwFormatIndex;
  621.     DWORD           dwFormatTag;
  622.     DWORD           fdwSupport;
  623.     LPWAVEFORMATEX  pwfx;
  624.     DWORD           cbwfx;
  625.     char            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  626.  
  627. } ACMFORMATDETAILS, *PACMFORMATDETAILS, FAR *LPACMFORMATDETAILS;
  628.  
  629. MMRESULT ACMAPI acmFormatDetails
  630. (
  631.     HACMDRIVER              had,
  632.     LPACMFORMATDETAILS      pafd,
  633.     DWORD                   fdwDetails
  634. );
  635.  
  636. #define ACM_FORMATDETAILSF_INDEX        0x00000000L
  637. #define ACM_FORMATDETAILSF_FORMAT       0x00000001L
  638. #define ACM_FORMATDETAILSF_QUERYMASK    0x0000000FL
  639.  
  640.  
  641.  
  642. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  643. //
  644. //  acmFormatEnum()
  645. //
  646. //
  647. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  648.  
  649. typedef BOOL (CALLBACK *ACMFORMATENUMCB)
  650. (
  651.     HACMDRIVERID            hadid,
  652.     LPACMFORMATDETAILS      pafd,
  653.     DWORD                   dwInstance,
  654.     DWORD                   fdwSupport
  655. );
  656.  
  657. MMRESULT ACMAPI acmFormatEnum
  658. (
  659.     HACMDRIVER              had,
  660.     LPACMFORMATDETAILS      pafd,
  661.     ACMFORMATENUMCB         fnCallback,
  662.     DWORD                   dwInstance, 
  663.     DWORD                   fdwEnum
  664. );
  665.  
  666. #define ACM_FORMATENUMF_WFORMATTAG       0x00010000L
  667. #define ACM_FORMATENUMF_NCHANNELS        0x00020000L
  668. #define ACM_FORMATENUMF_NSAMPLESPERSEC   0x00040000L
  669. #define ACM_FORMATENUMF_WBITSPERSAMPLE   0x00080000L
  670. #define ACM_FORMATENUMF_CONVERT          0x00100000L
  671. #define ACM_FORMATENUMF_SUGGEST          0x00200000L
  672. #define ACM_FORMATENUMF_HARDWARE         0x00400000L
  673. #define ACM_FORMATENUMF_INPUT            0x00800000L
  674. #define ACM_FORMATENUMF_OUTPUT           0x01000000L
  675.  
  676.  
  677. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  678. //
  679. //  acmFormatSuggest()
  680. //
  681. //
  682. //
  683. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  684.  
  685. MMRESULT ACMAPI acmFormatSuggest
  686. (
  687.     HACMDRIVER          had,
  688.     LPWAVEFORMATEX      pwfxSrc,
  689.     LPWAVEFORMATEX      pwfxDst,
  690.     DWORD               cbwfxDst,
  691.     DWORD               fdwSuggest
  692. );
  693.  
  694. #define ACM_FORMATSUGGESTF_WFORMATTAG       0x00010000L
  695. #define ACM_FORMATSUGGESTF_NCHANNELS        0x00020000L
  696. #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC   0x00040000L
  697. #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE   0x00080000L
  698.  
  699. #define ACM_FORMATSUGGESTF_TYPEMASK         0x00FF0000L
  700.  
  701.  
  702. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  703. //
  704. //  acmFormatChoose()
  705. //
  706. //
  707. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  708.  
  709. #define ACMHELPMSGSTRING        "acmchoose_help"
  710.  
  711. //
  712. //  MM_ACM_FORMATCHOOSE is sent to hook callbacks by the Format Chooser
  713. //  Dialog...
  714. //
  715. #define MM_ACM_FORMATCHOOSE             (0x8000)
  716.  
  717. #define FORMATCHOOSE_MESSAGE            0
  718. #define FORMATCHOOSE_FORMATTAG_VERIFY   (FORMATCHOOSE_MESSAGE+0)
  719. #define FORMATCHOOSE_FORMAT_VERIFY      (FORMATCHOOSE_MESSAGE+1)
  720. #define FORMATCHOOSE_CUSTOM_VERIFY      (FORMATCHOOSE_MESSAGE+2)
  721.  
  722.  
  723. typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROC)
  724. (
  725.     HWND                    hwnd,
  726.     UINT                    uMsg,
  727.     WPARAM                  wParam,
  728.     LPARAM                  lParam
  729. );
  730.  
  731.  
  732. //
  733. //
  734. //
  735. //
  736. typedef struct tACMFORMATCHOOSE
  737. {
  738.     DWORD           cbStruct;           // sizeof(ACMFORMATCHOOSE)
  739.     DWORD           fdwStyle;           // chooser style flags
  740.     
  741.     HWND            hwndOwner;          // caller's window handle
  742.  
  743.     LPWAVEFORMATEX  pwfx;               // ptr to wfx buf to receive choice
  744.     DWORD           cbwfx;              // size of mem buf for pwfx
  745.     LPCSTR          pszTitle;           // dialog box title bar
  746.     
  747.     char            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  748.     char            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
  749.  
  750.     LPSTR           pszName;            // custom name selection
  751.     DWORD           cchName;            // size in chars of mem buf for pszName
  752.  
  753.     DWORD           fdwEnum;            // format enumeration restrictions
  754.     LPWAVEFORMATEX  pwfxEnum;           // format describing restrictions
  755.     
  756.     //
  757.     //  the following members are used for custom templates only--which
  758.     //  are enabled by specifying ACMFORMATCHOOSE_STYLEF_ENABLEHOOK in the
  759.     //  fdwStyle member.
  760.     //
  761.     //  these members are IGNORED if ACMFORMATCHOOSE_STYLEF_ENABLEHOOK is
  762.     //  not specified.
  763.     //
  764.     HINSTANCE       hInstance;          // .EXE containing cust. dlg. template
  765.     LPCSTR          pszTemplateName;    // custom template name
  766.     LPARAM          lCustData;          // data passed to hook fn.
  767.     ACMFORMATCHOOSEHOOKPROC pfnHook;    // ptr to hook function
  768.     
  769.  
  770. } ACMFORMATCHOOSE, *PACMFORMATCHOOSE, FAR *LPACMFORMATCHOOSE;
  771.  
  772. //
  773. //  ACMFORMATCHOOSE.fdwStyle
  774. //
  775. //
  776. //
  777. #define ACMFORMATCHOOSE_STYLEF_SHOWHELP              0x00000004L
  778. #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK            0x00000008L
  779. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE        0x00000010L
  780. #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE  0x00000020L
  781. #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT       0x00000040L
  782.  
  783.  
  784. MMRESULT ACMAPI acmFormatChoose
  785. (
  786.     LPACMFORMATCHOOSE       pafmtc
  787. );
  788.  
  789.  
  790.  
  791. //--------------------------------------------------------------------------;
  792. //
  793. //  ACM Filter Tags
  794. //
  795. //
  796. //
  797. //
  798. //--------------------------------------------------------------------------;
  799.  
  800. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  801. //
  802. //  acmFilterTagDetails()
  803. //
  804. //
  805. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  806.  
  807. #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
  808.  
  809. typedef struct tACMFILTERTAGDETAILS
  810. {
  811.     DWORD           cbStruct;
  812.     DWORD           dwFilterTagIndex;
  813.     DWORD           dwFilterTag;
  814.     DWORD           cbFilterSize;
  815.     DWORD           fdwSupport;
  816.     DWORD           cStandardFilters;
  817.     char            szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  818.  
  819. } ACMFILTERTAGDETAILS, *PACMFILTERTAGDETAILS, FAR *LPACMFILTERTAGDETAILS;
  820.  
  821.  
  822. MMRESULT ACMAPI acmFilterTagDetails
  823. (
  824.     HACMDRIVER              had,
  825.     LPACMFILTERTAGDETAILS   paftd,
  826.     DWORD                   fdwDetails
  827. );
  828.  
  829. #define ACM_FILTERTAGDETAILSF_INDEX         0x00000000L
  830. #define ACM_FILTERTAGDETAILSF_FILTERTAG     0x00000001L
  831. #define ACM_FILTERTAGDETAILSF_LARGESTSIZE   0x00000002L
  832. #define ACM_FILTERTAGDETAILSF_QUERYMASK     0x0000000FL
  833.  
  834.  
  835.  
  836. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  837. //
  838. //  acmFilterTagEnum()
  839. //
  840. //
  841. //
  842. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  843.  
  844. typedef BOOL (CALLBACK *ACMFILTERTAGENUMCB)
  845. (
  846.     HACMDRIVERID            hadid,
  847.     LPACMFILTERTAGDETAILS   paftd,
  848.     DWORD                   dwInstance,
  849.     DWORD                   fdwSupport
  850. );
  851.  
  852. MMRESULT ACMAPI acmFilterTagEnum
  853. (
  854.     HACMDRIVER              had,
  855.     LPACMFILTERTAGDETAILS   paftd,
  856.     ACMFILTERTAGENUMCB      fnCallback,
  857.     DWORD                   dwInstance, 
  858.     DWORD                   fdwEnum
  859. );
  860.  
  861.  
  862.  
  863.  
  864.  
  865. //--------------------------------------------------------------------------;
  866. //
  867. //  ACM Filters
  868. //
  869. //
  870. //
  871. //
  872. //--------------------------------------------------------------------------;
  873.  
  874. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  875. //
  876. //  acmFilterDetails()
  877. //
  878. //
  879. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  880.  
  881. #define ACMFILTERDETAILS_FILTER_CHARS   128
  882.  
  883. typedef struct tACMFILTERDETAILS
  884. {
  885.     DWORD           cbStruct;
  886.     DWORD           dwFilterIndex;
  887.     DWORD           dwFilterTag;
  888.     DWORD           fdwSupport;
  889.     LPWAVEFILTER    pwfltr;
  890.     DWORD           cbwfltr;
  891.     char            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  892.  
  893. } ACMFILTERDETAILS, *PACMFILTERDETAILS, FAR *LPACMFILTERDETAILS;
  894.  
  895. MMRESULT ACMAPI acmFilterDetails
  896. (
  897.     HACMDRIVER              had,
  898.     LPACMFILTERDETAILS      pafd,
  899.     DWORD                   fdwDetails
  900. );
  901.  
  902. #define ACM_FILTERDETAILSF_INDEX        0x00000000L
  903. #define ACM_FILTERDETAILSF_FILTER       0x00000001L
  904. #define ACM_FILTERDETAILSF_QUERYMASK    0x0000000FL
  905.  
  906.  
  907.  
  908. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  909. //
  910. //  acmFilterEnum()
  911. //
  912. //
  913. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  914.  
  915. typedef BOOL (CALLBACK *ACMFILTERENUMCB)
  916. (
  917.     HACMDRIVERID            hadid,
  918.     LPACMFILTERDETAILS      pafd,
  919.     DWORD                   dwInstance,
  920.     DWORD                   fdwSupport
  921. );
  922.  
  923. MMRESULT ACMAPI acmFilterEnum
  924. (
  925.     HACMDRIVER              had,
  926.     LPACMFILTERDETAILS      pafd,
  927.     ACMFILTERENUMCB         fnCallback,
  928.     DWORD                   dwInstance, 
  929.     DWORD                   fdwEnum
  930. );
  931.  
  932.  
  933. #define ACM_FILTERENUMF_DWFILTERTAG         0x00010000L
  934.  
  935.  
  936.  
  937.  
  938. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  939. //
  940. //  acmFilterChoose()
  941. //
  942. //
  943. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  944.  
  945. //
  946. //  MM_ACM_FILTERCHOOSE is sent to hook callbacks by the Filter Chooser
  947. //  Dialog...
  948. //
  949. #define MM_ACM_FILTERCHOOSE             (0x8000)
  950.  
  951. #define FILTERCHOOSE_MESSAGE            0
  952. #define FILTERCHOOSE_FILTERTAG_VERIFY   (FILTERCHOOSE_MESSAGE+0)
  953. #define FILTERCHOOSE_FILTER_VERIFY      (FILTERCHOOSE_MESSAGE+1)
  954. #define FILTERCHOOSE_CUSTOM_VERIFY      (FILTERCHOOSE_MESSAGE+2)
  955.  
  956.  
  957.  
  958. typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROC)
  959. (
  960.     HWND                    hwnd,
  961.     UINT                    uMsg,
  962.     WPARAM                  wParam,
  963.     LPARAM                  lParam
  964. );
  965.  
  966.  
  967. //
  968. //  ACMFILTERCHOOSE
  969. //
  970. //
  971. typedef struct tACMFILTERCHOOSE
  972. {
  973.     DWORD           cbStruct;           // sizeof(ACMFILTERCHOOSE)
  974.     DWORD           fdwStyle;           // chooser style flags
  975.  
  976.     HWND            hwndOwner;          // caller's window handle
  977.  
  978.     LPWAVEFILTER    pwfltr;             // ptr to wfltr buf to receive choice
  979.     DWORD           cbwfltr;            // size of mem buf for pwfltr
  980.  
  981.     LPCSTR          pszTitle;
  982.  
  983.     char            szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  984.     char            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  985.     LPSTR           pszName;            // custom name selection
  986.     DWORD           cchName;            // size in chars of mem buf for pszName
  987.  
  988.     DWORD           fdwEnum;            // filter enumeration restrictions
  989.     LPWAVEFILTER    pwfltrEnum;         // filter describing restrictions
  990.     
  991.     //
  992.     //  the following members are used for custom templates only--which
  993.     //  are enabled by specifying ACMFILTERCHOOSE_STYLEF_ENABLEHOOK in the
  994.     //  fdwStyle member.
  995.     //
  996.     //  these members are IGNORED if ACMFILTERCHOOSE_STYLEF_ENABLEHOOK is not
  997.     //  specified.
  998.     //
  999.     HINSTANCE       hInstance;          // .EXE containing cust. dlg. template
  1000.     LPCSTR          pszTemplateName;    // custom template name
  1001.     LPARAM          lCustData;          // data passed to hook fn.
  1002.     ACMFILTERCHOOSEHOOKPROC pfnHook;    // ptr to hook function
  1003.  
  1004. } ACMFILTERCHOOSE, *PACMFILTERCHOOSE, FAR *LPACMFILTERCHOOSE;
  1005.  
  1006. //
  1007. //  ACMFILTERCHOOSE.fdwStyle
  1008. //
  1009. //
  1010. #define ACMFILTERCHOOSE_STYLEF_SHOWHELP              0x00000004L
  1011. #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK            0x00000008L
  1012. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE        0x00000010L
  1013. #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE  0x00000020L
  1014. #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT    0x00000040L
  1015.  
  1016.  
  1017. MMRESULT ACMAPI acmFilterChoose
  1018. (
  1019.     LPACMFILTERCHOOSE       pafltrc
  1020. );
  1021.  
  1022.  
  1023.  
  1024. //--------------------------------------------------------------------------;
  1025. //
  1026. //  ACM Stream API's
  1027. //
  1028. //
  1029. //
  1030. //--------------------------------------------------------------------------;
  1031.  
  1032. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1033. //
  1034. //  acmStreamOpen()
  1035. //
  1036. //
  1037. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1038.  
  1039. typedef struct tACMSTREAMHEADER
  1040. {
  1041.     DWORD           cbStruct;               // sizeof(ACMSTREAMHEADER)
  1042.     DWORD           fdwStatus;              // ACMSTREAMHEADER_STATUSF_*
  1043.     DWORD           dwUser;                 // user instance data for hdr
  1044.     LPBYTE          pbSrc;
  1045.     DWORD           cbSrcLength;
  1046.     DWORD           cbSrcLengthUsed;
  1047.     DWORD           dwSrcUser;              // user instance data for src
  1048.     LPBYTE          pbDst;
  1049.     DWORD           cbDstLength;
  1050.     DWORD           cbDstLengthUsed;
  1051.     DWORD           dwDstUser;              // user instance data for dst
  1052.     DWORD           dwReservedDriver[10];   // driver reserved work space
  1053.  
  1054. } ACMSTREAMHEADER, *PACMSTREAMHEADER, FAR *LPACMSTREAMHEADER;
  1055.  
  1056. //
  1057. //  ACMSTREAMHEADER.fdwStatus
  1058. //
  1059. //  ACMSTREAMHEADER_STATUSF_DONE: done bit for async conversions.
  1060. //
  1061. #define ACMSTREAMHEADER_STATUSF_DONE        0x00010000L
  1062. #define ACMSTREAMHEADER_STATUSF_PREPARED    0x00020000L
  1063. #define ACMSTREAMHEADER_STATUSF_INQUEUE     0x00100000L
  1064.  
  1065.  
  1066.  
  1067. MMRESULT ACMAPI acmStreamOpen
  1068. (
  1069.     LPHACMSTREAM            phas,       // pointer to stream handle
  1070.     HACMDRIVER              had,        // optional driver handle
  1071.     LPWAVEFORMATEX          pwfxSrc,    // source format to convert
  1072.     LPWAVEFORMATEX          pwfxDst,    // required destination format
  1073.     LPWAVEFILTER            pwfltr,     // optional filter
  1074.     DWORD                   dwCallback, // callback
  1075.     DWORD                   dwInstance, // callback instance data
  1076.     DWORD                   fdwOpen     // ACM_STREAMOPENF_* and CALLBACK_*
  1077. );
  1078.  
  1079. #define ACM_STREAMOPENF_QUERY           0x00000001
  1080. #define ACM_STREAMOPENF_ASYNC           0x00000002
  1081. #define ACM_STREAMOPENF_NONREALTIME     0x00000004
  1082.  
  1083.  
  1084. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1085. //
  1086. //  acmStreamClose()
  1087. //
  1088. //
  1089. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1090.  
  1091. MMRESULT ACMAPI acmStreamClose
  1092. (
  1093.     HACMSTREAM              has,
  1094.     DWORD                   fdwClose
  1095. );
  1096.  
  1097.  
  1098.  
  1099. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1100. //
  1101. //  acmStreamSize()
  1102. //
  1103. //
  1104. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1105.  
  1106. MMRESULT ACMAPI acmStreamSize
  1107. (
  1108.     HACMSTREAM              has,
  1109.     DWORD                   cbInput,
  1110.     LPDWORD                 pdwOutputBytes,
  1111.     DWORD                   fdwSize
  1112. );
  1113.  
  1114. #define ACM_STREAMSIZEF_SOURCE          0x00000000L
  1115. #define ACM_STREAMSIZEF_DESTINATION     0x00000001L
  1116. #define ACM_STREAMSIZEF_QUERYMASK       0x0000000FL
  1117.  
  1118.  
  1119.  
  1120. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1121. //
  1122. //  acmStreamReset()
  1123. //
  1124. //
  1125. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1126.  
  1127. MMRESULT ACMAPI acmStreamReset
  1128. (
  1129.     HACMSTREAM              has,
  1130.     DWORD                   fdwReset
  1131. );
  1132.  
  1133.  
  1134.  
  1135. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1136. //
  1137. //  acmStreamConvert()
  1138. //
  1139. //
  1140. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1141.  
  1142. MMRESULT ACMAPI acmStreamConvert
  1143. (
  1144.     HACMSTREAM              has, 
  1145.     LPACMSTREAMHEADER       pash,
  1146.     DWORD                   fdwConvert
  1147. );
  1148.  
  1149. #define ACM_STREAMCONVERTF_BLOCKALIGN   0x00000004
  1150. #define ACM_STREAMCONVERTF_START        0x00000010
  1151. #define ACM_STREAMCONVERTF_END          0x00000020
  1152.  
  1153.  
  1154. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1155. //
  1156. //  acmStreamPrepareHeader()
  1157. //
  1158. //
  1159. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1160.  
  1161. MMRESULT ACMAPI acmStreamPrepareHeader
  1162. (
  1163.     HACMSTREAM          has,
  1164.     LPACMSTREAMHEADER   pash,
  1165.     DWORD               fdwPrepare
  1166. );
  1167.  
  1168.  
  1169.  
  1170.  
  1171. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1172. //
  1173. //  acmStreamUnprepareHeader()
  1174. //
  1175. //
  1176. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  1177.  
  1178. MMRESULT ACMAPI acmStreamUnprepareHeader
  1179. (
  1180.     HACMSTREAM          has,
  1181.     LPACMSTREAMHEADER   pash,
  1182.     DWORD               fdwUnprepare
  1183. );
  1184.                                        
  1185.  
  1186.  
  1187. #ifndef RC_INVOKED
  1188. #pragma pack()          /* Revert to default packing */
  1189. #endif  /* RC_INVOKED */
  1190.  
  1191. #ifdef __cplusplus
  1192. }                       /* End of extern "C" { */
  1193. #endif  /* __cplusplus */
  1194.  
  1195. #endif  /* _INC_ACM */
  1196.